NET WinForm 通过CefSharp 96.0.170嵌入Google浏览器并与网页JS交互

您所在的位置:网站首页 winform js NET WinForm 通过CefSharp 96.0.170嵌入Google浏览器并与网页JS交互

NET WinForm 通过CefSharp 96.0.170嵌入Google浏览器并与网页JS交互

#NET WinForm 通过CefSharp 96.0.170嵌入Google浏览器并与网页JS交互| 来源: 网络整理| 查看: 265

NET WinForm 通过CefSharp 96.0.170嵌入Google浏览器加载网页并与网页JS交互,示例代码如下,NET WinForm代码:

using CefSharp; using CefSharp.WinForms; using System; using System.Drawing; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { /// /// Chromium浏览器实例 /// public ChromiumWebBrowser WebBrowser; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { ///设置 var setting = new CefSettings(); setting.Locale = "zh-CN";// 设置语言 setting.AcceptLanguageList = "zh-CN"; setting.MultiThreadedMessageLoop = true; //setting.CachePath = "CHBrowser/BrowserCache";//缓存路径 setting.AcceptLanguageList = "zh-CN,zh;q=0.8";//浏览器引擎的语言 //setting.LocalesDirPath = "CHBrowser/localeDir";//日志 //setting.LogFile = "CHBrowser/LogData";//日志文件 //setting.PersistSessionCookies = true;// setting.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";//浏览器内核 //setting.UserDataPath = "CHBrowser/userData";//个人数据 setting.CefCommandLineArgs.Add("disable-gpu", "1"); // 禁用GPU,解决闪烁.否则电脑上运行网页显示图形比例会不正常 ///初始化 CefSharp.Cef.Initialize(setting); WebBrowser = new ChromiumWebBrowser("http://localhost:81/www/CefSharpTest.html"); //初始页面 #region //Bak //Old method //browser.RegisterJsObject("bound", new BoundObject(), options: BindingOptions.DefaultBinder); //Replaced with //CefSharpSettings.WcfEnabled = true; //browser.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true; //browser.JavascriptObjectRepository.Register("bound", new BoundObject(), isAsync: false, options: BindingOptions.DefaultBinder); //Old Method //browser.RegisterAsyncJsObject("boundAsync", new AsyncBoundObject(), options: BindingOptions.DefaultBinder); //Replaced with //browser.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true; //browser.JavascriptObjectRepository.Register("boundAsync", new AsyncBoundObject(), isAsync: true, options: BindingOptions.DefaultBinder); #endregion //Font font = new Font("hiragino sans gb", 7f); Font font = new Font("wenquanyi micro hei", 7f); //Font font = new Font("sans - serif", 7f); //Font font = new Font(".PingFang SC Medium", 7f); WebBrowser.Font = font; WebBrowser.Dock = DockStyle.Fill;//铺满 WebBrowser.Dock = DockStyle.Fill;//设置停靠方式 WebBrowser.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true; //交互数据 //CefSharpSettings.WcfEnabled = true; //(bound为前端被调用的对象名称.如:bound.login();BoundObject为C#被暴露的Class对象,对应的js调用的方法就是BoundObject.Login()) WebBrowser.JavascriptObjectRepository.Register("bound", new BoundObject(), isAsync: false, options: BindingOptions.DefaultBinder); //交互数据 //WebBrowser.JavascriptObjectRepository.Register("boundAsync", new AsyncBoundObject(), isAsync: true, options: BindingOptions.DefaultBinder); this.panel1.Controls.Add(WebBrowser);//加入窗体 } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { Cef.Shutdown(); } private async void button2_Click(object sender, EventArgs e) { await WebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync("test_val=" + new Random().Next().ToString("F")); //设置页面上js的test_val变量为随机数 await WebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync("test()");//运行页面上js的test方法 } private async void button3_Click(object sender, EventArgs e) { await WebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync("testArg('我是NET参数1','我是NET参数2' )");//运行页面上js的testArg带参数的方法 } } public class BoundObject { public string MessageText { get; set; } public void Getvalue() { MessageBox.Show("收到JS调用,我是NET弹框.\n\r" + MessageText); //return "aaaaaaa"; } public void GetValueArg(string inss) { MessageBox.Show("收到JS带参数调用,我是NET弹框.\n\r" + inss); } } }

加载网页HTML代码:

CefSharp测试 body,html,div,ul,li,iframe,p,img{ border:none; padding: 0; margin: 0; font-size: 14px; font-family: "微软雅黑"; } #map{ height: 100%; width: 100%; position: absolute; } /*图层控件的样式设置*/ .layerControl{ position: absolute; bottom: 5px; min-width: 150px; max-height: 600px; right: 0px; top: 30px; z-index: 2001; color: #FFFFFF; background-color: #7B98BC; border-width: 10px; border-radius: 10px; border-color: #000#000#000#000; } 发送给Net程序 发送给Net程序带参数 //实例化map对象 var map=new ol.Map({ //地图容器div的ID target:'map', //在地图中加载的图层 layers:[new ol.layer.Tile({source: new ol.source.OSM(),})], //地图视图设置 view:new ol.View({ //地图中心点 center:[13576194,4788260], //地图初始显示级别 zoom:4, minZoom:0, maxZoom:21, constrainResolution:true }), controls:ol.control.defaults().extend([ new ol.control.MousePosition({ target:document.getElementById('mouse-position') }) ]) }); var test_val; function test() { alert("收到Net程序事件,我是JS弹框." + test_val); } function testArg(d1,d2) { alert("收到带参Net程序事件,参数1为:" + d1 + ".我是JS弹框."); alert("收到带参Net程序事件,参数2为:" + d2 + ".我是JS弹框."); } $(function () { $('button:eq(0)').on("click", BtnClick); $('button:eq(1)').on("click", BtnClickArgs); }) function BtnClick() { if (typeof bound == "undefined") { alert("bound参数未初始化"); return; } try { //alert(bound.MessageText); bound.MessageText = "我是js"; //alert(bound.MessageText); } catch(err) { alert(err.message); } try { //bound.Getvalue(); bound.getvalue();//如果提示函数名不存在,可以尝试改一下函数名第一个字母大小试试(具体原因未知) } catch(err) { alert(err.message); } } function BtnClickArgs() { if (typeof bound == "undefined") { alert("bound参数未初始化") return; } try { //bound.GetValueArg($('textarea:eq(0)').val()); bound.getValueArg($('textarea:eq(0)').val());//如果提示函数名不存在,可以尝试改一下函数名第一个字母大小试试(具体原因未知) } catch(err) { alert(err.message); } }

运行界面如下:

注意事项:如果JS调用NET函数时提示is not a funtion(如下图所示)。可以尝试改一下函数名第一个字母大小试试(具体原因未知)。

测试项目源码(项目创建环境visual studio 2022 .net 4.7.2)下载:CefSharpTest.zip-C#文档类资源-CSDN下载NETWinForm通过CefSharp96.0.170嵌入Google浏览器并与网页JS交互更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/cwr888/65223583

 参考资料:Remove CefSharp.WebBrowserExtensions.RegisterJsObject/RegisterAsyncJsObject · Issue #2990 · cefsharp/CefSharp · GitHubFirstly this is only a minor change to allow for some upcoming changes, the changes to your code are fairly simple. The methods have been removed to page the way for Legacy Binding being available on a per object basis rather than a per ...https://github.com/cefsharp/CefSharp/issues/2990

 使用 CefSharp 网页显示问题_weixin_30677617的博客-CSDN博客1、问题最近做一个内嵌 CefSharp的Winform程序,发现有的电脑上运行网页显示图形比例不正常,也无法使用。网页左边明显变大。2、原因,网页显示时内部使用了 GPU渲染,导至了有的电脑上出现了问题。3、解决方案 var settings = new CefSettings { Locale = "...https://blog.csdn.net/weixin_30677617/article/details/99614469NuGet Gallery | CefSharp.WinForms 96.0.180The CefSharp Chromium-based browser component (WinForms control).https://www.nuget.org/packages/CefSharp.WinForms/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3